Text encoding in Final Fantasy VII
==================================

ASCII conversion table
----------------------

FFVII	ASCII / Purpose

00			(space)
02		"	(quotation mark)
07		'	(apostrophe thingy)
0C		,	(comma)
0D		-	(slash)
0E		.	(dot)

10		0
11		1
12		2
13		3
14		4
15		5
16		6
17		7
18		8
19		9

1A

1B					3B		[
1C					3C
1D					3D		]
1E					3E
1F					3F

21		A			41		a
22		B			32		b
23		C			33		c
24		D			34		d
25		E			35		e
26		F			46		f
27		G			47		g
28		H			48		h
29		I			49		i
2A		J			4A		j
2B		K			4B		k
2C		L			4C		l
2D		M			4D		m
2E		N			4E		n
2F		O			4F		o
30		P			40		p
31		Q			41		q
32		R			42		r
33		S			43		s
34		T			44		t
35		U			45		u
36		V			56		v
37		W			57		w
38		X			58		x
39		Y			59		y
3A		Z			5A		z

FExx	Change text color to xx
		D5	magenta	(menu)
		D7	cyan	(location
		D9	white	(normal text)

FF		End of segment




	 chPC = "',.-0123456789";
	 chPC += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	 chPC += "abcdefghijklmnopqrstuvwxyz";
	chFF7 = "\x07\x0C\x0E\x0D\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19";
	chFF7 += "\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A";
	chFF7 += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

CString CFF7File::PCStr (char* strFF7, int len)
{
	int i;
	CString buf = "";
	for (i=0;i<len;i++) {
		if (strFF7[i]!=0xFFFFFFFF) {
			if (strFF7[i]!=0) buf += chPC.Mid(chFF7.Find(strFF7[i]),1);
			else buf += " ";
		}
		else {
			return buf;
		}
	}
	return buf;
}

CString CFF7File::FF7Str (char* strPC, int len)
{
	int i;
	CString buf = "";
	for (i=0;i<len;i++) {
//		buf += chFF7.Mid(chPC.Find(strPC[i]),1);
		if (strPC[i]!=0x0) {
			if (strPC[i]!=0x20) buf += chFF7.Mid(chPC.Find(strPC[i]),1);
			else buf += "\x00";
		}
		else {
			buf += "\xFF";
			return buf;
		}
	}
	return buf;
}
